package cn.calin.day05.demo48Exception;

import java.util.ArrayList;
import java.util.List;

/*
    异常注意事项：

 */
public class Demo08Exception {
    public static void main(String[] args) {
        /*
            多个异常使用捕获又该如何处理呢？
            1.多个异常分别处理
            2.多个异常一次捕获，多次处理
            3.多个异常一次捕获一次处理
         */

        //1.多个异常分别处理
        /*try{
            int[] arr={1,2,3};
            System.out.println(arr[3]);//.ArrayIndexOutOfBoundsException
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println(e);
        }
        try{
            List<Integer> list=List.of(1,2,3);
            System.out.println(list.get(3));//.ArrayIndexOutOfBoundsException
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println(e);
        }
        System.out.println("后续代码");*/


        //2.多个异常一次捕获，多次处理
        //ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException
        /*try {
        int[] arr = {1, 2, 3};
        System.out.println(arr[3]);//.ArrayIndexOutOfBoundsException
        List<Integer> list = List.of(1, 2, 3);
        System.out.println(list.get(3));//.ArrayIndexOutOfBoundsException
        }catch(ArrayIndexOutOfBoundsException e) {
             System.out.println(e);
        }catch (IndexOutOfBoundsException e){
            System.out.println(e);
        }
        *//*
            一个try多个catch注意事项：
                catch里定义的异常变量，如果有子父类关系，那么子类必须写在上边，否则会报错
         *//*
        System.out.println("代码后续");*/


        /*
            3.一次捕获一次处理
         */
       /* try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]);//.ArrayIndexOutOfBoundsException
            List<Integer> list = List.of(1, 2, 3);
            System.out.println(list.get(3));//.ArrayIndexOutOfBoundsException
        }catch (IndexOutOfBoundsException e){
            System.out.println(e);
        }
        System.out.println("代码后续");*/

        //运行时异常被抛出可以不处理。即不捕获也不声明抛出。
        //默认给虚拟机处理，终止程序，什么时候不抛出运行异常了，再来继续执行程序
}



}
